6bd3301ba1a5a63c244d33449bdccf6115f1755e,components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java,FallbackTypeConverter,unmarshal,#Unmarshaller#Exchange#Object#,208

Before Change



    protected Object unmarshal(Unmarshaller unmarshaller, Exchange exchange, Object value) throws JAXBException, UnsupportedEncodingException, XMLStreamException {
        unmarshallerLock.lock();
        try {
            if (value instanceof XMLStreamReader) {
                XMLStreamReader xmlReader = (XMLStreamReader) value;
                return unmarshaller.unmarshal(xmlReader);
            } else if (value instanceof InputStream) {
                if (needFiltering(exchange)) {
                    return unmarshaller.unmarshal(new NonXmlFilterReader(new InputStreamReader((InputStream)value, IOHelper.getCharsetName(exchange))));
                }
                return unmarshaller.unmarshal((InputStream)value);
            } else if (value instanceof Reader) {
                Reader reader = (Reader)value;
                if (needFiltering(exchange)) {
                    if (!(value instanceof NonXmlFilterReader)) {
                        reader = new NonXmlFilterReader((Reader)value);
                    }
                }
                return unmarshaller.unmarshal(reader);
            } else if (value instanceof Source) {
                return unmarshaller.unmarshal((Source)value);
            }
        } finally {
            unmarshallerLock.unlock();

After Change


    }

    protected Object unmarshal(Unmarshaller unmarshaller, Exchange exchange, Object value) throws JAXBException, UnsupportedEncodingException, XMLStreamException {
        try {
            XMLStreamReader xmlReader = null;
            if (value instanceof XMLStreamReader) {
                xmlReader = (XMLStreamReader) value;
            } else if (value instanceof InputStream) {
                if (needFiltering(exchange)) {
                    xmlReader = staxConverter.createXMLStreamReader(new NonXmlFilterReader(new InputStreamReader((InputStream)value, IOHelper.getCharsetName(exchange))));
                } else {
                    xmlReader = staxConverter.createXMLStreamReader((InputStream)value, exchange);
                }
            } else if (value instanceof Reader) {
                Reader reader = (Reader)value;
                if (needFiltering(exchange)) {
                    if (!(value instanceof NonXmlFilterReader)) {
                        reader = new NonXmlFilterReader((Reader)value);
                    }
                }
                xmlReader = staxConverter.createXMLStreamReader(reader);
            } else if (value instanceof Source) {
                xmlReader = staxConverter.createXMLStreamReader((Source)value);
            } else {
                throw new IllegalArgumentException("Cannot convert from " + value.getClass());
            }